package uk.org.aspellclark.gedcom.model.records;

import java.util.List;

import uk.org.aspellclark.gedcom.model.ChangeDate;
import uk.org.aspellclark.gedcom.model.SourceRepositoryCitation;
import uk.org.aspellclark.gedcom.model.UserReference;
import uk.org.aspellclark.gedcom.model.structures.MultimediaLink;
import uk.org.aspellclark.gedcom.model.structures.NoteStructure;

/** <pre>SOURCE_RECORD:=
    n @&lt;XREF:SOUR>@ SOUR                          {1:1}
        +1 DATA                                   {0:1}
        +2 EVEN &lt;EVENTS_RECORDED>                 {0:M}
            +3 DATE &lt;DATE_PERIOD>                 {0:1}
            +3 PLAC &lt;SOURCE_JURISDICTION_PLACE>   {0:1}
        +2 AGNC &lt;RESPONSIBLE_AGENCY>              {0:1}
        +2 &lt;&lt;NOTE_STRUCTURE>>                     {0:M}
    +1 AUTH &lt;SOURCE_ORIGINATOR>                   {0:1}
        +2 [CONC|CONT] &lt;SOURCE_ORIGINATOR>        {0:M}
    +1 TITL &lt;SOURCE_DESCRIPTIVE_TITLE>            {0:1}
        +2 [CONC|CONT] &lt;SOURCE_DESCRIPTIVE_TITLE> {0:M}
    +1 ABBR &lt;SOURCE_FILED_BY_ENTRY>               {0:1}
    +1 PUBL &lt;SOURCE_PUBLICATION_FACTS>            {0:1}
        +2 [CONC|CONT] &lt;SOURCE_PUBLICATION_FACTS> {0:M}
    +1 TEXT &lt;TEXT_FROM_SOURCE>                    {0:1}
        +2 [CONC|CONT] &lt;TEXT_FROM_SOURCE>         {0:M}
    +1 &lt;&lt;SOURCE_REPOSITORY_CITATION>>             {0:M}
    +1 REFN &lt;USER_REFERENCE_NUMBER>               {0:M}
    +2 TYPE &lt;USER_REFERENCE_TYPE>                 {0:1}
    +1 RIN &lt;AUTOMATED_RECORD_ID>                  {0:1}
    +1 &lt;&lt;CHANGE_DATE>>                            {0:1}
    +1 &lt;&lt;NOTE_STRUCTURE>>                         {0:M}
    +1 &lt;&lt;MULTIMEDIA_LINK>>                        {0:M}</pre>
Source records are used to provide a bibliographic description of the source cited. (See the
&lt;&lt;SOURCE_CITATION>> structure, page 39, which contains the pointer to this source record.)
 */
public class SourceRecord extends GedcomRecord {

	public class SourceEvent {
		public String type;
		public String date;
		public String place;
	}

	public List<SourceEvent> events;

	public String auth;
	public String title;
	public String abbr;
	public String publ;
	public String text;
	public List<SourceRepositoryCitation> sourceReposCitation;
	public List<UserReference> refn;

	public String rin;
	public ChangeDate changeDate;
	public List<NoteStructure> note;
	public List<MultimediaLink> multimediaLink;

	/**
	 * @param idFromString
	 */
	public SourceRecord(String idFromString) {
		this.xref = idFromString;
	}
}
